/*
 * AlgorithmPlugin.java
 *
 * Created on Streda, 2007, november 14, 7:50
 *
 */

package logic.schedulers;

import java.util.Vector;
import javax.swing.JFrame;

/**
 * Rozhranie pre dynamicky nacitavane moduly planovania v gride.
 *
 * @author alvin
 */
public interface AlgorithmPlugin {

    /**
     * @return Nazov algoritmu, ktory sa bude zobrazovat v menu.
     */
    public String getName();

    /**
     * @return Jedinecne cislo pre dany algoritmus, na zaklade ktoreho
	 * bude mozne zotriedenie viacerych algoritmov do menu.
     */
    public int getIndex();
    
    /**
	 * @return Null, ak pre dany algoritmus nie je mozne nastavit parametre.
	 * Inak vracia dialogove okno, ktore umozni nastavenie
	 * parametrov algortimu.
     */
    public ParametersDialog getParamDialog();

    /**
     * Zavola sa pred prvym getParamDialog(). Sluzi na inicaliziaciu dialogu
     * s parametrami.
     */
    public void createParamDialog(JFrame owner);
    
    /**
	 * Funkcia na zistenie aktualnych parametrov algoritmu potrebna pre
	 * ich zobrazenie v dialogovom okne ich nastavovania.
	 * @return Null, ak algoritmus nema parametre, ktore by sa dali nastavit.
	 * Inak vrati parametre vo vhodnej forme.
     */
    public Object getParameters();

    /**
     * Nastavenie parametrov na novu hodnotu. Parametre sa ziskaju
	 * z dialogoveho okna.
     */
    public void setParameters(Object parameters);
    
    
    /**
	 * @return Null, ak algoritmus neobsahuje ziadne parametre. Inak vrati
	 * zoznam parametrov v tvare, z ktoreho ich neskor bude vediet nacitat.
     */
    public Vector<String> getParametersText();
    
    /**
     * Nastavenie parametrov na nove hodnoty.
     */
    public void setParametersText(Vector<String> newValues);
}
